package com.whsr.readservice.util;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * HttpClient4.3工具类
 *
 * @author hang.luo
 */
public class HttpClientUtils {
    private static Logger logger = LoggerFactory.getLogger(HttpClientUtils.class); // 日志记录

    private static RequestConfig requestConfig = null;

    static {
        // 设置请求和传输超时时间
        requestConfig = RequestConfig.custom().setConnectionRequestTimeout(6000).setSocketTimeout(6000).setConnectTimeout(6000).build();
    }

    /**
     * post请求传输json参数
     *
     * @param url  url地址
     * @param jsonParam 参数
     * @return
     */
    public static JSONObject httpPost(String url, JSONObject jsonParam) {
        // post请求返回结果
        CloseableHttpClient httpClient = HttpClients.createDefault();
        JSONObject jsonResult = null;
        HttpPost httpPost = new HttpPost(url);
        // 设置请求和传输超时时间
        httpPost.setConfig(requestConfig);
        try {
            if (null != jsonParam) {
                // 解决中文乱码问题
                StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
                entity.setContentEncoding("UTF-8");
                entity.setContentType("application/json");
                httpPost.setEntity(entity);
            }
            CloseableHttpResponse result = httpClient.execute(httpPost);
            // 请求发送成功，并得到响应
            if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                String str = "";
                try {
                    // 读取服务器返回过来的json字符串数据
                    str = EntityUtils.toString(result.getEntity(), "utf-8");
                    // 把json字符串转换成json对象
                    jsonResult = JSONObject.parseObject(str);
                } catch (Exception e) {
                    logger.error("post请求提交失败:" + url, e);
                }
            }
        } catch (IOException e) {
            logger.error("post请求提交失败:" + url, e);
        } finally {
            httpPost.releaseConnection();
        }
        return jsonResult;
    }

    /**
     * post请求传输String参数
     * Content-type:application/x-www-form-urlencoded
     *
     * @param url      url地址
     * @param strParam 参数
     * @return
     */
    public static JSONObject httpPost(String url, Map<String, Object> strParam) {
        // post请求返回结果
        CloseableHttpClient httpClient = HttpClients.createDefault();
        JSONObject jsonResult = null;
        HttpPost httpPost = new HttpPost(url);
        httpPost.setConfig(requestConfig);
        try {
            if (strParam != null) {
                List<NameValuePair> paramList = new ArrayList<>();
                for (String key : strParam.keySet()) {
                    paramList.add(new BasicNameValuePair(key, strParam.get(key).toString()));
                }
                // 模拟表单
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList, "utf-8");
                httpPost.setEntity(entity);
            }
            String userAgent = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " +
                    "Chrome/54.0.2840.87 Safari/537.36";
            httpPost.setHeader("User-Agent",userAgent);
            CloseableHttpResponse result = httpClient.execute(httpPost);
            // 请求发送成功，并得到响应
            if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                String str = "";
                try {
                    // 读取服务器返回过来的json字符串数据
                    str = EntityUtils.toString(result.getEntity(), "utf-8");
                    str = StringEscapeUtils.unescapeJava(str);
                    str = HttpClientUtils.jsonString(str);
                    // 把json字符串转换成json对象
                    str = str.replace('\n',' ')
                            .replace("\r","")
                            //.replace("_","")
                            .replace("`", "")
                            //.replace(".", "")
                            //.replace("|", "")
                            .replace("\\", "")
                    .replace("”ch_vip”:”", "\"ch_vip\":\"");
                    jsonResult = JSONObject.parseObject(str);
                } catch (Exception e) {
                    logger.error("json解析失败:", e);
                }
            }
        } catch (IOException e) {
            logger.error("post请求提交失败:" + url, e);
        } finally {
            httpPost.releaseConnection();
        }
        return jsonResult;
    }

    /**
     * 发送get请求
     *
     * @param url 路径
     * @return
     */
    public static JSONObject httpGet(String url) {
        // get请求返回结果
        JSONObject jsonResult = null;
        CloseableHttpClient client = HttpClients.createDefault();
        // 发送get请求
        HttpGet request = new HttpGet(url);
        request.setConfig(requestConfig);
        try {
            CloseableHttpResponse response = client.execute(request);

            // 请求发送成功，并得到响应
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                // 读取服务器返回过来的json字符串数据
                HttpEntity entity = response.getEntity();
                String strResult = EntityUtils.toString(entity, "utf-8");
                // 把json字符串转换成json对象
                jsonResult = JSONObject.parseObject(strResult);
            } else {
                logger.error("get请求提交失败:" + url);
            }
        } catch (IOException e) {
            logger.error("get请求提交失败:" + url, e);
        } finally {
            request.releaseConnection();
        }
        return jsonResult;
    }

    public static String doPost(String url, Map<String, String> param) {
        // 创建Httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        String resultString = "";
        try {
            // 创建Http Post请求
            HttpPost httpPost = new HttpPost(url);
            // 创建参数列表
            if (param != null) {
                List<NameValuePair> paramList = new ArrayList<>();
                for (String key : param.keySet()) {
                    paramList.add(new BasicNameValuePair(key, param.get(key)));
                }
                // 模拟表单
                UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList, "utf-8");

                httpPost.setEntity(entity);
            }
            // 执行http请求
            // 设置userAgent 模仿浏览器访问
            String userAgent = "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.87 Safari/537.36";
            httpPost.setHeader("User-Agent",userAgent);
            response = httpClient.execute(httpPost);
            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
            resultString = StringEscapeUtils.unescapeJava(resultString);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                response.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        return resultString;
    }

    public static void main(String[] args) {
        String str = "{\"bookID\":\"56498\",\"bookName\":\"红颜离尘木兰开\",\"bookCover\":\"http://res.cjzww.com/image/book/cover/5/64/56498.jpg\",\"bookAuthor\":\"甘棠钰\",\"words\":\"256756\",\"status\":\"连载\",\"click\":317841,\"Channel\":\"0\",\"bookIntro\":\"战火硝烟，你只见我凶残狠辣，杀人如麻。\n" +
                "华殿锦袍，你只见我阿谀谄媚，权倾朝野。\n" +
                "你从不知，我既以自由与性命作了代价，便再也不能随心所欲。\n" +
                "你从不知，我早以一心相付，盼白首不离。\n" +
                "你从不知，即便尘嚣漫天，木兰花仍在迎光盛开。\",\"bookClass\":\"言情\",\"rank_01\":[{\"bookID\":98646,\"bookName\":\"绝代纨绔\",\"bookAuthor\":\"伪二代\",\"bookCover\":\"http://res.cjzww.com/image/book/cover/9/86/98646.jpg\",\"bookClassa\":\"都市现实\",\"bookClassb\":null,\"bookIntro\":\"想我死？没那么容易！极品富二代被暗杀后竟重生于世，看着身边一个个伪善的面目，他决定揭开这些虚伪！\"},{\"bookID\":73475,\"bookName\":\"极品逍遥邪帝\",\"bookAuthor\":\"天岩\",\"bookCover\":\"http://res.cjzww.com/image/book/cover/7/34/73475.jpg\",\"bookClassa\":\"玄幻奇幻\",\"bookClassb\":\"东方玄幻\",\"bookIntro\":\"灵武大陆门派万千，强者如云，凡人无数。\n" +
                "修炼战体，是这个世界的主流。而修炼灵魂，却在数万年前没落，被炼体者所摒弃。\n" +
                "\"},{\"bookID\":99926,\"bookName\":\"西域贡女\",\"bookAuthor\":\"夏龙河\",\"bookCover\":\"http://res.cjzww.com/image/book/cover/9/99/99926.jpg\",\"bookClassa\":\"历史军事\",\"bookClassb\":\"历史传记\",\"bookIntro\":\"大唐开元二年（714年），隶属大唐的西域诸国（今中亚地区）遭到黑衣大食（阿拉伯哈里发王朝）屠戮，几近灭国。康居国国王咄曷\"}],\"rank_02\":[{\"bookID\":14039,\"bookName\":\"十三福晋失踪之谜\",\"bookAuthor\":\"我心无语\",\"bookCover\":\"http://res.cjzww.com/image/book/cover/1/40/14039.jpg\",\"bookClassa\":\"仙侠奇缘\",\"bookClassb\":\"现代修真\",\"bookIntro\":\"十三阿哥大婚在际，十三福晋不翼而飞。\n" +
                "三阿哥临危受命，帮助十三弟找寻未来老婆。\n" +
                "关键证人接连失踪，精巧绣帕暗藏玄机。\"},{\"bookID\":101499,\"bookName\":\"我的漫画师女友\",\"bookAuthor\":\"素绾\",\"bookCover\":\"http://res.cjzww.com/image/book/cover/10/14/101499.jpg\",\"bookClassa\":\"都市职场\",\"bookClassb\":\"行业情感\",\"bookIntro\":\"一边是不辞而别抛弃自己的负心汉宫铭炫，一边是尽情压榨自己的大金主沈云挚，屌丝画手夏木木表示，如果可以，她选择狗带！\n" +
                "沈云\"},{\"bookID\":98651,\"bookName\":\"较量\",\"bookAuthor\":\"吴问银\",\"bookCover\":\"http://res.cjzww.com/image/book/cover/9/86/98651.jpg\",\"bookClassa\":\"历史军事\",\"bookClassb\":\"历史传记\",\"bookIntro\":\"共产党员张凤山带着使命从延安回到家乡文城，在码头接头时因为叛徒出卖被抓，文城地下党几乎全军覆没。在这种情况下，张凤山只好\"}],\"comments\":[{\"id\":\"1801363\",\"datetime\":\"2014-08-18 16:47:12\",\"user_name\":\"墨律\",\"user_id\":\"98501\",\"content\":\"战场之中沐浴着鲜血与杀戮，迎着腥风血雨生长的孱弱木兰，无论沾染多少血腥与怨恨，高尚的灵魂却不会因此而陨落。*袭战袍且将红妆换，周身血色毁去年少梦。道不尽的爱恨情痴，忘不掉的喜怒哀怨。近在咫尺，却只当不知拥有美貌才华和拥有权利军权的他，当*人的身影渐渐合*为*之时，美丽的她却又有暴戾之名，神秘的他却以孝慧为天下所知。这些年的努力和忍耐究竟是铸就了他还是毁去了她？呼，好长*段的感悟。墨墨看了*遍阿甘的文文，看得出来，相比较于阴谋诡计，阿甘更倾向于鲜衣怒马，驰骋疆场。的确，墨墨的女子太过阴险，可以称得上是个伪君子，而阿甘的女主虽有暴戾之名，相比之下倒显得光明磊落起来了。难道古代官场上的女子改变命运的途径便如此相似么？不得不说，阿甘的文和墨墨的文，相同之处却不止是*星半点。都是在家人帮助下女扮男装，都有尊贵的身世，都有不同于旁人的胆识与谋略，都有影射的结局（在阿甘这里是与珉月境遇相同的清宁，在墨墨这里是与子默身份相当的瑾瑜），都有赠簪的正妻之约。可是，似乎相似却又似完全不同，其中选择，哪是*言两语尚可道尽。总之，爱上子默这样的女人太危险，爱上云湘这样的太无奈。不得不说，虽然阿甘，整篇文章都是悲伤基调，可是结局究竟如何，还是希望能给云湘*个好的结局，不能让*个灵魂除却悲伤再不识其他。\n" +
                "\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=98501&size=middle\"},{\"id\":\"1795019\",\"datetime\":\"2014-08-16 07:20:57\",\"user_name\":\"疯狂的兔子li\",\"user_id\":\"84873\",\"content\":\"当当当当！兔子说好的评论来鸟！花了*个晚上终于看完，感慨万千，要是*不小心开启吐槽模式，汤圆莫怪哈！最开始的*幕和亲较量，斗智斗勇，是*个很不错的开场，云湘给展示出的是*位有勇有谋、满是枭雄之气的形象！兔子本来以为情节会向着潇湘暮雨、背井离乡、儿女情长、英雄气短的线路发展却没想到是大漠孤烟、长河落日、金戈铁马、整戈待旦、铮铮铁骨、流血漂橹、*将功成、万骨尽枯！战场似地狱，朝堂如战场！冷血残酷的武帝*登基便屠戮其他皇子，导致手足寥寥，更是为了制衡朝廷势力无所不用其极，而身不由己的云湘便成了他的傀儡和替他施行暴政的爪牙从而背负骂名、受尽唾弃！宫里宫外更是人情冷漠，太后妃嫔就算年老也无力交心，甚至不能在这冰冷的十丈软红里互相给予*丝温情！被软禁之人更是幽思不绝于耳。朝堂内外唯*剩下的只有*层又*层的猜忌和*环套*环的阴谋。人心在这狡诈诡谲、阴谋缭绕、争权夺利、散发着浓稠血腥味的现场苦苦挣扎、无声呐喊，最后却只能将自己软弱的内心用嗜杀渴血、惨绝人寰、血腥屠城的冰冷铠甲包围来坚铸自己权利的铁壁，塑造自己不可侵犯的威严。其中最精彩的*幕要属云湘对敌军所设的局---好*个假意不合、欲擒故纵、诱敌深入、瓮中捉鳖。实在是精彩，让兔子看得很爽。然后，兔子以为文文会朝行军打仗、谋略斗法方面发展，于是兔子就很没有节操地开始yy卫王和他身边男同胞们的军旅基情（咳咳~腐女的恶趣味，汤圆莫要介意！），甚至兔子也*度对这位年少英勇、才智超凡而又隐忍负重的卫王暗许芳心啊，有木有！可是，竟然，没~想~到~拔青竹竟然*下子化为了绕指柔（我说，汤圆，你和墨墨是不是约好了滴~）这让兔子忽然就明白了汤圆文中的诸多埋伏和设定的缘由也同时懂得标题红颜离尘木兰香意思。话说，汤圆的文文内容丰富、角色众多却驾驭得很好，战斗场面气势磅礴，情节节奏也把握得不错，期待后续！（云湘那种英气逼人的冷酷*点都不像是女孩子，难怪兔子会中计啊有木有！不过这个*面眼中满怀柔情、心中悲天悯人，*面却冷酷残忍、冰冷无情的主角让人不禁痛恨并怜爱着她)最后，让兔子有点看不明白的是汤圆刚刚更新的第*十*章和第*十*章里，萧郎不是已经知道云湘就是月儿了咩？为什么还要质问她是不是月儿？不知道汤圆是不是想要表达出那种昔日善良圣洁的恋人如今却变为冰冷陌生的卫王的那种感觉却因为情感渲染得不够和表述得不够清楚而让兔子产生了模糊的感觉。总之，兔子看得还是蛮津津有味的！好了，昼伏夜出的兔子长评就渣到这里，这就走鸟~~~\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=84873&size=middle\"},{\"id\":\"1734818\",\"datetime\":\"2014-07-24 13:09:55\",\"user_name\":\"画中莲\",\"user_id\":\"101772\",\"content\":\"甘蔗，莲子来了！刚才*口气把你的文文全看完了，看到最后还真是有些欲罢不能啊！甘蔗的文风完全与莲子的是完全不同的，莲子是完完全全的宠文，内容太简单了，有些小白，自己看到都觉得不好意思了。=_=     甘蔗的文内容很丰富，故意很精彩，环节很曲折，真的是很吸引人！莲子要向你多多学习才行！^_^   莲子觉得甘蔗写中的女主—云湘，她实在是太帅了，简直是帅到掉渣啊！绝色的容貌，高强的武功，显赫的身世…这些些实在是太令人羡慕了。不过她也有她的悲哀，她也有她的无奈。明明身为红颜，却不得不扮成男装，以男子的身份示人，这就是她的悲哀！莲子又觉得云湘应该是向往和平，不喜杀戮的吧！但是她为了她的国家，又不得不长期浴血奋战，杀人如麻，这是她的无可奈何吧！还有她身处高位，还要时时刻刻防备着他人的算计，这真的会让她觉得很累很疲惫吧！甘蔗笔下的云湘真的令莲子很心疼。还有那个司徒枫是情钟云湘的吧！他无怨无悔地陪着云湘身边，处处为云湘设想，为了云湘愿意付出*切，甚至是他的生命！此等深情真的是太令人感动了！真希望他能跟云湘幸福的在*起。好的，就先说到这吧！莲子以后会常来踩踩的，甘蔗加油！^_^\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=101772&size=middle\"},{\"id\":\"1732269\",\"datetime\":\"2014-07-23 12:02:57\",\"user_name\":\"雪落未央城\",\"user_id\":\"85458\",\"content\":\"雪落送长评来啦，小甘同学的文真是和墨墨有着异曲同工之妙呢，*个云湘*个子默，*个不爱红装爱武装，*个不坐闺阁做学子。*个武艺超群*个才学惊世。都让雪落欲罢不能呢。小甘同学的文从*开始就抓住了大家的眼球，带着面具的卫王云湘，*下子就让人想到了兰陵王呢哦呵呵呵=不得不说湘儿好坎坷。虽握有军权却被人处处算计。情节曲折动人扣人心弦，雪落觉得好刺激呢。虽然有阴谋有算计，感情朦胧，在战场上飞驰的她，英姿飒爽，在官场上让人感觉神秘的她，似乎是两个人，有着两种性格，不得不说小甘同学很擅长塑造人物形象哦。雪落会*直追文的0记得更新么么哒\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=85458&size=middle\"},{\"id\":\"1707137\",\"datetime\":\"2014-07-11 22:10:15\",\"user_name\":\"墨律\",\"user_id\":\"98501\",\"content\":\"战场之中沐浴着鲜血与杀戮，迎着腥风血雨生长的孱弱木兰，无论沾染多少血腥与怨恨，高尚的灵魂却不会因此而陨落。*袭战袍且将红妆换，周身血色毁去年少梦。道不尽的爱恨情痴，忘不掉的喜怒哀怨。近在咫尺，却只当不知。拥有美貌才华的她和拥有权力军权的他，当*人的身影渐渐合而为*之时，美丽的她却又有暴戾之名，神秘的他却以孝慧为天下所知。这些年的努力和忍耐究竟是铸就了他还是毁去了她？呼，好长*段的感悟。墨墨看了*遍阿甘的文文，看得出来，相比较于阴谋诡计，阿甘更倾向于鲜衣怒马，驰骋疆场。的确，墨墨的女主确实太过阴险，可以称得上是个伪君子，而阿甘的女主虽有暴戾之名，相比之下倒显得光明磊落起来了。难道古代官场女子改变命运的途径便如此相似么，不得不说，阿甘的文与墨墨的文，相同之处却不止*星半点。都是在家人帮助下女扮男装，都有尊贵的身世，都有不同与旁人的但是与谋略，都有影射的结局（在阿甘这里是与珉月境遇相同的清宁，在墨墨这里是与子默身份相当的瑾瑜），都有赠簪的正妻之约。可是，似乎相似却又似完全不同，其中选择，哪是*言两语尚可道尽。总之，爱上子默这样的女人太危险，爱上云湘这样的有太无奈。不得不说，虽然阿甘，整篇文章都是悲伤基调，可是结局究竟如何，还是希望能给云湘*个好的结局，不能让*个灵魂除却悲伤再不识其他。\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=98501&size=middle\"},{\"id\":\"2095613\",\"datetime\":\"2015-03-04 11:15:04\",\"user_name\":\"反潮妞\",\"user_id\":\"96647\",\"content\":\"反潮妞携《沉烟香》来访，推荐票送上。\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=96647&size=middle\"},{\"id\":\"2090532\",\"datetime\":\"2015-02-26 14:24:10\",\"user_name\":\"乔轻沫\",\"user_id\":\"86905\",\"content\":\"乔大带着新坑《失恋遇上许沉木》前来拜访了，有空就去看看吧~~~~\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=86905&size=middle\"},{\"id\":\"2086565\",\"datetime\":\"2015-02-21 11:36:02\",\"user_name\":\"道冥九爷\",\"user_id\":\"128287\",\"content\":\"咳咳！……看见作者大大已经有了好几条长评了，虽然我只是业余的，也只好写出几句来。刚刚点进作者大大的小说时，感觉又是*篇言情小说，但是收藏和点击还是杠杠的。这让我实在佩服，不知道作者大大为什么不申请上架和星级作品，我个人觉得，作者大大之所以能有这么好的成绩，完全是靠写文能力强，让小jiu得学习小你，虽然我不擅长写言情，但是这shi几年看后宫电视剧不是白看的。作者大大写文的水平往往在很多人之上，唯yi 不足的就是章节名字，如果你能让章节名字变得有诗味就不同了。那么，在这里，祝愿作者大大能*书封神，也望求作者大大和编辑商量下，上星级作品。\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=128287&size=middle\"},{\"id\":\"2086564\",\"datetime\":\"2015-02-21 11:35:50\",\"user_name\":\"道冥九爷\",\"user_id\":\"128287\",\"content\":\"咳咳！……看见作者大大已经有了好几条长评了，虽然我只是业余的，也只好写出几句来。刚刚点进作者大大的小说时，感觉又是*篇言情小说，但是收藏和点击还是杠杠的。这让我实在佩服，不知道作者大大为什么不申请上架和星级作品，我个人觉得，作者大大之所以能有这么好的成绩，完全是靠写文能力强，让小jiu得学习小你，虽然我不擅长写言情，但是这shi几年看后宫电视剧不是白看的。作者大大写文的水平往往在很多人之上，唯yi 不足的就是章节名字，如果你能让章节名字变得有诗味就不同了。那么，在这里，祝愿作者大大能*书封神，也望求作者大大和编辑商量下，上星级作品。\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=128287&size=middle\"},{\"id\":\"2085860\",\"datetime\":\"2015-02-20 11:10:57\",\"user_name\":\"LK凌珂\",\"user_id\":\"104529\",\"content\":\"过年好！小珂来看书友，送上推荐票票，欢迎来小舍《忘川莫忘颜》坐坐。\",\"zan\":0,\"reply\":0,\"haveZan\":false,\"avatar\":\"http://ucenter.cjzww.com/avatar.php?uid=104529&size=middle\"}],\"chapterCount\":91}";
        JSONObject.parse(str);
    }


    private static String jsonString(String s){
        char[] temp = s.toCharArray();
        int n = temp.length;
        for(int i =0;i<n;i++){
            if(temp[i]==':'&&temp[i+1]=='"'){
                for(int j =i+2;j<n;j++){
                    if(temp[j]=='"'){
                        if(temp[j+1]!=',' &&  temp[j+1]!='}'){
                            temp[j]='”';
                        }else if(temp[j+1]==',' ||  temp[j+1]=='}'){
                            break ;
                        }
                    }
                }
            }
        }
        return new String(temp);
    }



}
